package jvm;

import java.util.ArrayList;
import java.util.List;

/**
 * @author wanyuxiang
 * @version 1.0
 * @project Java_base
 * @create 2017-05-04 16:50
 * @desc -verbose:gc -verbose:class -XX:+TraceClassLoading -Xms20M -Xmx20M -Xmn10M -XX:+PrintGCDetails -XX:SurvivorRatio=8
 * -verbose:class和-XX:+TraceClassLoading/-XX:+TraceClassUnLoading(这个卸载类需要在fastDebug版本的JVM支持) 查看类加载及卸载信息
 **/
public class JavaOOM {

    public static void main(String[] args) {
        /**
         * -Xms堆的最小值和-Xmx设置一样避免堆自动扩展
         * -verbose:gc -Xms20M -Xmx20M -Xmn10M
         * -XX:+PrintGCDetails -XX:SurvivorRatio=8
         * -XX:+HeapDumpOnOutOfMemoryError （是让JVM在出现内存溢出的异常时，dump出当前的内存堆转储快照方便分析）
         * -XX:HeapDumpPath=D:\dump  （heapdump文件存放位置）
         * -Xloggc:${目录}/temp_gc.log （GC日志文件）
         */
        List<OOMObject> list = new ArrayList<>();
        while (true) {
            list.add(new OOMObject());
        }

    }

    static class OOMObject {

    }
}
